package com.biz.primus.app.rest.feign;

import com.biz.primus.app.rest.degraded.DegradedCartFeignClient;
import com.biz.primus.model.cart.vo.*;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;

/**
 * CartFeignClient
 *
 * @author JKLiues
 * @date 2017年11月14日
 */
@FeignClient(qualifier = "cartFeignClient", name = "service-cart", fallback = DegradedCartFeignClient.class)
public interface CartFeignClient {


    /**
     * 获取购物车详情
     *
     * @param reqVo 用户id etc.
     * @return ShopCartRespVo
     */
    @PostMapping("soa/shopCartService/getShopCartInfo")
    ShopCartRespVo getShopCartInfo(@RequestBody CartBaseReqVo reqVo);

    /**
     * 加入购物车
     *
     * @param reqVo 加入购物车的商品 和数量
     * @return ShopCartRespVo
     */
    @PostMapping("soa/shopCartService/addShopCartItem")
    ShopCartRespVo addShopCartItem(@RequestBody ShopCartItemAddVo reqVo);

    /**
     * 删除购物车中的指定商品
     *
     * @param reqVo 删除商品
     */
    @PostMapping("soa/shopCartService/deleteShopCartItems")
    void deleteShopCartItems(@RequestBody CartProductListVo reqVo);

    /**
     * 选中购物车中的商品
     *
     * @param vo 请求Vo
     */
    @PostMapping("soa/shopCartService/selectedItem")
    void selectedItem(@RequestBody ShopCartItemCheckVo vo);

    /**
     * 获取购物车商品数量
     *
     * @param reqVo 基础请求VO 用户id etc.
     * @return ShopCartNumRespVo
     */
    @PostMapping("soa/shopCartService/getShopCartNum")
    ShopCartNumRespVo getShopCartNum(@RequestBody CartBaseReqVo reqVo);

}